package com.naiterui.ehp.bs.cms.modules.statistics.service;

import java.util.List;

import com.naiterui.common.repository.page.PageVO;
import com.naiterui.ehp.bp.bo.agent.ProvinceItemBO;
import com.naiterui.ehp.bp.bo.statistics.CustomOrderReportBO;
import com.naiterui.ehp.bp.bo.statistics.CustomProductReportBO;
import com.naiterui.ehp.bp.bo.statistics.CustomRecipelConsultReportBO;
import com.naiterui.ehp.bp.bo.statistics.DataReportBO;
import com.naiterui.ehp.bp.bo.statistics.DataReportInviteBO;
import com.naiterui.ehp.bp.bo.statistics.DataReportProductBO;
import com.naiterui.ehp.bp.bo.statistics.DataReportRecipelBO;
import com.naiterui.ehp.bs.cms.common.vo.PageParamsVO;

/**
 * 经纪人数据统计
 * 
 * @author yangfuya
 * @since 2022/1/5
 */
public interface IStatisticsService {

    /**
     * 客户详情-数据报表处方相关
     * 
     * @param customId
     * @param reportType
     * @param reportDate
     * @return
     */
    CustomRecipelConsultReportBO getRecipelAndConsult(Long customId, Integer reportType, String reportDate);

    /**
     * 客户详情-数据报告药品
     * 
     * @param customId
     * @param reportType
     * @param reportDate
     * @return
     */
    CustomProductReportBO getProduct(Long customId, Integer reportType, String reportDate);

    /**
     * 客户详情-数据报告订单
     * 
     * @param customId
     * @param reportType
     * @param reportDate
     * @return
     */
    CustomOrderReportBO getOrder(Long customId, Integer reportType, String reportDate);

    /**
     * 数据报表首页
     * 
     * @param agentId
     * @return
     */
    DataReportBO getDateReportIndex(Long agentId);

    /**
     * 数据报表-处方相关
     * 
     * @param agentId
     * @param reportType
     * @param reportDate
     * @return
     */
    DataReportRecipelBO getRecipelDateReport(Long agentId, Integer reportType, String reportDate);

    /**
     * 数据报表-邀请医生
     * 
     * @param agentId
     * @param reportType
     * @param reportDate
     * @return
     */
    DataReportInviteBO getInviteDataReport(Long agentId, Integer reportType, String reportDate);

    /**
     * 数据报告-商品售卖
     * 
     * @param pageParamsVO
     * @param agentId
     * @param reportType
     * @param reportDate
     * @return
     */
    PageVO<DataReportProductBO> getProduct(PageParamsVO pageParamsVO, Long agentId, Integer reportType,
        String reportDate);

    /**
     * 获取省份的统计
     * 
     * @param proviceAreaIStr
     * @param year
     * @param month
     * @return
     */
    List<ProvinceItemBO> getProviceTotal(Long areaId, String proviceAreaIStr, String year, String month);
}
